import { refreshMonitorData } from '@/store'
import { SAMPLEINTERVAL } from '@shared/constants'
import { useSetAtom } from 'jotai'
import { useEffect, useRef } from 'react'

/**
 * 数据刷新 Hook - 专门负责定时刷新监控数据
 * 只刷新 CPU、内存和网络负载数据，不刷新静态的系统信息
 */
export const useDataRefresh: () => { manualRefresh: () => void } = () => {
  const refresh = useSetAtom(refreshMonitorData)

  // 用于追踪是否已初始化的标志
  const isInitialized = useRef(false)

  useEffect(() => {
    // 只在组件首次加载时立即触发一次更新
    if (!isInitialized.current) {
      refresh()
      isInitialized.current = true
    }

    // 设置定时器，每 SAMPLEINTERVAL 毫秒刷新一次监控数据
    // 采样间隔必须大于1000毫秒，避免频繁刷新
    if (!SAMPLEINTERVAL || SAMPLEINTERVAL < 1000) return
    const interval = setInterval(() => {
      refresh()
    }, SAMPLEINTERVAL)

    return () => clearInterval(interval)
  }, [refresh])

  // 返回手动刷新函数，便于组件手动触发刷新
  return {
    manualRefresh: () => refresh()
  }
}
